/**
    Copyright (c) 2010 yakiimo02
    Distributed under the New BSD License.
    See included license.txt or http://www.yakiimo3d.com/NewBSDLicense.txt
**/

#include "DXUT.h"
#include "optimized/SmallPtGeometryOPT.h"

namespace OPT
{

// Changed WALL_RAD in order to alleviate problems that arises from using float instead of double.
#define WALL_RAD 5500.0f
//#define WALL_RAD 10000.0f
//Scene: radius, position, emission, color, material
Sphere spheresOPT[] = 
{
    Sphere(WALL_RAD, Vec( WALL_RAD+1,40.8,81.6), Vec(),Vec(.75,.25,.25),DIFF),    //Left
    Sphere(WALL_RAD, Vec(-WALL_RAD+99,40.8,81.6),Vec(),Vec(.25,.25,.75),DIFF),    //Rght
    Sphere(WALL_RAD, Vec(50,40.8, WALL_RAD),     Vec(),Vec(.75,.75,.75),DIFF),    //Back
    Sphere(WALL_RAD, Vec(50,40.8,-WALL_RAD+170), Vec(),Vec(),           DIFF),    //Frnt
    Sphere(WALL_RAD, Vec(50, WALL_RAD, 81.6),    Vec(),Vec(.75,.75,.75),DIFF),    //Botm
    Sphere(WALL_RAD, Vec(50,-WALL_RAD+81.6,81.6),Vec(),Vec(.75,.75,.75),DIFF),    //Top
    Sphere(16.5,Vec(27,16.5,47),       Vec(),Vec(1,1,1)*.999, SPEC),              //Mirr
    Sphere(16.5,Vec(73,16.5,78),       Vec(),Vec(1,1,1)*.999, REFR),              //Glas
    // Couldn't get rid of float precision issues so changed scene using smallptgpu as reference.
    // http://davibu.interfree.it/opencl/smallptgpu/smallptGPU.html
    //Sphere(600, Vec(50,681.6-.27,81.6),Vec(12,12,12),  Vec(), DIFF)             //Lite
    Sphere(7, Vec(50,66.6,81.6),Vec(12,12,12),  Vec(), DIFF)                      //Lite
};

}